﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace EsercitazioneVerifica
{
   static class GestioneFile
    {
        static string Path = @"c:\document\paperino\";
        static string NomeFile = "pluto.dat";
        static string Pathd = Path + NomeFile;
        static int[] Lunghezze = { 6, 6, 1, 4, 3,1 };
        static public void MakeDirectory()
        {
            try
            {
                Directory.CreateDirectory(Path);
                FileStream fs = File.Create(Pathd);
                fs.Close();

            }catch(IOException e)
            {
                Console.WriteLine(e.Message);
            }
        }
       static public void Scrivi(Studente s)
        {
            try
            {
                // creo delle variabili a cui convertitro i valori in stringa 
                string Classe = s.Classe.ToString();
                string Anno_Nascità = s.Anno_nascita.ToString();
                char pippo = 'p';

                string record;

                if (s.Nome.Length > Lunghezze[0])
                {
                    s.Nome = s.Nome.Remove(Lunghezze[0]);
                }
                if (s.Cognome.Length > Lunghezze[1])
                {
                    s.Cognome = s.Cognome.Remove(Lunghezze[1]);
                }
                if (Classe.Length > Lunghezze[2])
                {
                    Classe = Classe.Remove(Lunghezze[2]);
                }
                if (Anno_Nascità.Length > Lunghezze[3])
                {
                    Anno_Nascità = Anno_Nascità.Remove(Lunghezze[3]);
                }
                if (s.Inidirizzo.Length > Lunghezze[4])
                {
                    s.Inidirizzo = s.Inidirizzo.Remove(Lunghezze[4]);
                }
                // scrivo sul record
                record = s.Nome.PadRight(Lunghezze[0], ' ') + s.Cognome.PadRight(Lunghezze[1], ' ') + Classe.PadRight(Lunghezze[2], ' ') + Anno_Nascità.PadRight(Lunghezze[3], ' ') +
                    s.Inidirizzo.PadRight(Lunghezze[4], ' ') + pippo + System.Environment.NewLine;
                StreamWriter sw = new StreamWriter(Pathd, true);
                sw.Write(record);
                sw.Close();
            }
            catch (IOException e)
            {
                Console.WriteLine(e.Message);
            }
        }
        static public List<Studente> Leggi()
        {
            try
            {
                List<Studente> studente = new List<Studente>();
                string record;
                string[] campi;
                StreamReader sr = new StreamReader(Pathd);
                while ((record = sr.ReadLine()) != null)
                {
                    campi = RicavaCampi(record);
                    
                    studente.Add(new Studente(campi[0], campi[1], Convert.ToInt32(campi[2]), Convert.ToInt32(campi[3]), campi[4],'q'));
                }
                sr.Close();
                return studente;
            }
            catch (IOException e)
            {
                Console.WriteLine(e.Message);
            }
            return null;
        }
        static private string[] RicavaCampi(string record)
        {
            string[] campi = new string[Lunghezze.Length];
            int pos=0;
            int i = 0;
            int j = 0;
            do
            {
                campi[j] = record.Substring(pos, Lunghezze[i]).TrimEnd(' ');
                pos += Lunghezze[i];
                j++;
                i++;
            } while (i < Lunghezze.Length);
            return campi;
        }
    }
}
